La Necesidad de Rehashear
Para garantizar el rendimiento deseado de en promedio para búsqueda e inserción, el Factor de Carga () debe estar estrictamente limitado, donde es el número de elementos y es la capacidad de la tabla.
Si se permite crecer indefinidamente, las colisiones aumentan exponencialmente y la complejidad promedio del tiempo de ejecución degrada hacia .
| Condición | Acción Activada | Impacto |
|---|---|---|
| Estándar inserción | Se mantiene la eficiencia óptima. | |
| Redimensionamiento (Rehasheo) | Restaura rendimiento, pero genera un costo temporal de costo. |
Valores Umbral Comunes (): 0.70 a 0.75.
El Proceso de Redimensionamiento
El redimensionamiento requiere recalcular el índice de hash para cada elemento actualmente en la tabla, un proceso conocido como Rehasheo.
- Determinación de Nueva Capacidad: Seleccione una nueva capacidad , generalmente el doble de la capacidad actual (). Esto asegura que el nuevo sea la mitad del umbral crítico.
- Creación de la Tabla: Asigne un nuevo arreglo de tabla hash de tamaño .
- Iteración de Elementos: Recorra todos los elementos existentes en la tabla antigua.
- Rehasheo: Para cada clave , calcule el nuevo índice usando el módulo actualizado:
- Inserción: Inserte el elemento en la nueva tabla en el .
Nota: Como el módulo cambia, copiar simplemente el arreglo es imposible; cada elemento debe ser reinsertado.
Costo Amortizado
¿Por qué el redimensionamiento es
El redimensionamiento requiere procesar todos los elementos, lo que significa que la operación misma toma tiempo, lo cual viola temporalmente el objetivo de inserción.
Análisis Amortizado
Utilizamos Análisis Amortizado para justificar este costo. Si la tabla duplica su tamaño cada vez que se redimensiona (crecimiento exponencial), el costo elevado de se distribuye sobre un gran número de inserciones intermedias de inserciones.
El costo promedio de cualquier inserción individual, considerando el redimensionamiento periódico, sigue siendo redimensionamiento, permanece .
1. Un mapa hash tiene una capacidad y un factor de carga máximo . ¿En qué número de elementos () debe activarse el redimensionamiento?
2. Durante un redimensionamiento, ¿por qué no podemos copiar simplemente los elementos de la tabla antigua a la nueva, más grande?
3. ¿Cuál es la complejidad de tiempo amortizado de una inserción en una tabla hash que duplica su tamaño al redimensionarse?
4. ¿Cuál es la consecuencia principal de no redimensionar una tabla hash cuando su factor de carga se vuelve demasiado alto?